package tree;

/**
 * @author kaho
 * @since 2021/2/22
 */
public class _100_相同的树 {

    /**
     * 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
     *
     * 如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
     * @param p
     * @param q
     * @return
     */
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q ==null) {
            return true;
        }
        if (!isSameNode(p,q)) {
            return false;
        }
        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }

    private boolean isSameNode(TreeNode p, TreeNode q){
     return (p!=null && q!=null && q.val == p.val)
             || (p ==null && q==null);
    }
}
